Parent এবং Child POM এর ধারণা

Maven Multi-module Projects - ম্যাভেন (Maven) - Java Technologies

384

Maven একটি শক্তিশালী প্রোজেক্ট বিল্ডিং এবং ম্যানেজমেন্ট টুল যা POM (Project Object Model) ফাইল ব্যবহার করে প্রোজেক্টের কনফিগারেশন, ডিপেনডেন্সি এবং বিল্ড পরিচালনা করে। Parent POM এবং Child POM হল Maven এর একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা multi-module projects পরিচালনা করার জন্য ব্যবহৃত হয়। এই পদ্ধতিটি POM inheritance বা aggregation এর মাধ্যমে প্রোজেক্টের কনফিগারেশন ভাগ করে এবং ডিপেনডেন্সি, প্লাগইন এবং অন্যান্য কনফিগারেশন ভাগ করে দেয়।

Parent POM এবং Child POM কি?

  1. Parent POM:
    • Parent POM হলো একটি মূল (root) POM ফাইল যা বিভিন্ন Child POM গুলোর জন্য সাধারণ কনফিগারেশন সরবরাহ করে। এটি মডুলারের জন্য নির্দিষ্ট কনফিগারেশন সেট এবং ডিপেনডেন্সি ফাইলগুলির জন্য একটি মডেল হিসেবে কাজ করে।
    • এটি প্রকল্পের সাধারণ সেটিংস, ডিপেনডেন্সি, প্লাগইন এবং বিল্ড কনফিগারেশন নির্ধারণ করে, যা সমস্ত Child POM দ্বারা উত্তরাধিকারসূত্রে গ্রহণ করা হয়।
  2. Child POM:
    • Child POM হলো একটি Maven প্রোজেক্টের পোম ফাইল যা Parent POM থেকে কনফিগারেশন এবং ডিপেনডেন্সি উত্তরাধিকারসূত্রে গ্রহণ করে। তবে, Child POM তার নিজস্ব নির্দিষ্ট কনফিগারেশনও ধারণ করতে পারে যা Parent POM থেকে আলাদা।
    • Child POM মূলত একটি সাব-মডিউল হিসেবে কাজ করে, যেখানে আপনি নির্দিষ্ট সেটিংস এবং ডিপেনডেন্সি যুক্ত করতে পারেন, যা Parent POM থেকে পাওয়া কনফিগারেশনের উপর ভিত্তি করে কাজ করবে।

Parent এবং Child POM এর সুবিধা

  1. কনফিগারেশন পুনঃব্যবহারযোগ্যতা:
    • Parent POM কনফিগারেশন এবং ডিপেনডেন্সি সমন্বয়ের জন্য একটি সাধারণ কেন্দ্রীয় ফাইল সরবরাহ করে। এর ফলে Child POM গুলোতে বারবার একই কনফিগারেশন পুনরায় লিখতে হয় না।
    • আপনি Parent POM এ ডিপেনডেন্সি, প্লাগইন এবং বিল্ড কনফিগারেশন লিখে রেখে Child POM গুলোতে সেটি উত্তরাধিকার সূত্রে গ্রহণ করতে পারেন।
  2. মাল্টি-মডিউল প্রোজেক্ট ম্যানেজমেন্ট:
    • Parent এবং Child POM গুলির ব্যবহার মাল্টি-মডিউল Maven প্রোজেক্ট পরিচালনা করতে সহায়ক হয়। একাধিক সাব-মডিউল বা প্রোজেক্টকে একই প্যারেন্ট পোমের অধীনে পরিচালনা করা যায়, যা সামগ্রিক প্রোজেক্টে একক কনফিগারেশন মডেল প্রয়োগ করে।
    • এটি প্রোজেক্টে ডিপেনডেন্সি সংস্করণের সাথে সম্পর্কিত সমস্যা দূর করতে সাহায্য করে।
  3. কেন্দ্রীয় কনফিগারেশন ম্যানেজমেন্ট:
    • প্যারেন্ট POM এর মাধ্যমে আপনি সমস্ত সাব-মডিউল/চাইল্ড প্রোজেক্টের জন্য কেন্দ্রীয় কনফিগারেশন ম্যানেজ করতে পারেন। এর ফলে প্রোজেক্টের কনফিগারেশনগুলি কেন্দ্রীয়ভাবে পরিচালনা এবং সংস্করণ করা সহজ হয়।

Parent POM এবং Child POM কিভাবে কাজ করে?

  1. Parent POM তৈরি করা: প্রথমে একটি Parent POM ফাইল তৈরি করতে হবে, যেখানে আপনার সমস্ত কমন কনফিগারেশন এবং ডিপেনডেন্সি থাকবে।

Parent POM উদাহরণ:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>parent-project</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <modules>
        <module>child-module1</module>
        <module>child-module2</module>
    </modules>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>5.3.9</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.1</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>

এখানে, dependencyManagement অংশে আপনি সমস্ত কমন ডিপেনডেন্সি এবং pluginManagement অংশে প্লাগইনের কনফিগারেশন সরবরাহ করছেন।

  1. Child POM তৈরি করা: এখন আপনি Parent POM এর অধীনে Child POM ফাইল তৈরি করতে পারবেন। এই ফাইলটি শুধুমাত্র নির্দিষ্ট কনফিগারেশন এবং ডিপেনডেন্সি সম্বলিত হবে, যেগুলি Parent POM থেকে উত্তরাধিকারসূত্রে প্রাপ্ত হবে।

Child POM উদাহরণ:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>com.example</groupId>
        <artifactId>parent-project</artifactId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath> <!-- Parent POM এর লোকেশন -->
    </parent>

    <artifactId>child-module1</artifactId>

    <dependencies>
        <!-- Parent POM থেকে inherited ডিপেনডেন্সি ব্যবহার করা হবে -->
    </dependencies>

    <build>
        <plugins>
            <!-- Parent POM থেকে inherited প্লাগইন ব্যবহার করা হবে -->
        </plugins>
    </build>
</project>

এখানে, parent ট্যাগের মাধ্যমে Parent POM এর রেফারেন্স যুক্ত করা হয়েছে, যার ফলে Child POM Parent POM থেকে সমস্ত কনফিগারেশন গ্রহণ করবে। আপনি চাইলে Child POM-এ অতিরিক্ত নির্দিষ্ট কনফিগারেশনও যোগ করতে পারেন।

Parent এবং Child POM এর মধ্যে সম্পর্ক

  • Inheritance: Child POM Parent POM থেকে সমস্ত কনফিগারেশন, ডিপেনডেন্সি, প্লাগইন, এবং বিল্ড কনফিগারেশন উত্তরাধিকারসূত্রে গ্রহণ করে। তবে, Child POM নিজের প্রয়োজন অনুযায়ী এই কনফিগারেশনগুলিকে কাস্টমাইজ বা ওভাররাইডও করতে পারে।
  • Module Aggregation: Parent POM-এ module এলিমেন্টের মাধ্যমে Child POM গুলির উল্লেখ করা হয়। এটি Parent POM-এ সমস্ত সাব-মডিউলকে সংযুক্ত করে, যেগুলি একসাথে বিল্ড করা যাবে।
  • Dependency Management: Parent POM এর dependencyManagement ট্যাগের মাধ্যমে সমস্ত ডিপেনডেন্সির ভার্সন এবং ম্যানেজমেন্ট করা হয়, যা Child POM-এ প্রয়োগ হয়।

সারাংশ

Parent POM এবং Child POM হল Maven এর মূল বৈশিষ্ট্য, যা একাধিক মডিউল বা প্রোজেক্টের জন্য কনফিগারেশন ভাগ করতে সহায়তা করে। Parent POM একটি মূল ফাইল যা সকল Child POM-এ শেয়ার করা কনফিগারেশন এবং ডিপেনডেন্সি সংরক্ষণ করে। Child POM মডিউল-specific কনফিগারেশন ধারণ করে এবং Parent POM থেকে উত্তরাধিকারসূত্রে কনফিগারেশন গ্রহণ করে। এই পদ্ধতি multi-module projects তৈরি করতে সাহায্য করে এবং প্রোজেক্টের কনফিগারেশন ম্যানেজমেন্ট সহজ করে তোলে।

Content added By
Promotion

Are you sure to start over?

Loading...